package cn.gok.springsecuritydemo01.authenticationHandler;

import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.logout.LogoutHandler;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Enumeration;

/**
    在退出登录的过滤器中，持有 CompositeLogoutHandler对象
    该对象中又持有一个 List<LogoutHandler>
    里面存放了各种场景退出登录处理器

        当执行退出登录的时候，就会遍历此集合，挨个执行退出登录的相关逻辑
            比如清除session、清除 SecurityContext中的用户数据等等

    那我们要在退出登录的时候，追加一些，则只需实现LogoutHandler接口，编写相关处理逻辑即可。

 */
public class MyLogoutHandler implements LogoutHandler {
    @Override
    public void logout(HttpServletRequest request,
                       HttpServletResponse response,
                       Authentication authentication) {

        //取出 session中存放的用户数据
        Object userInfo = request.getSession().getAttribute("SPRING_SECURITY_CONTEXT");
        System.out.println(userInfo);

        System.out.println("执行自定义退出登录逻辑。。。");
    }
}
